/**
 * 
 */
package com.bs.areport.service.master;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.spy.db.DBUtil;

import com.bs.areport.service.util.DataUtil;
import com.bs.areport.service.util.EntityType;
import com.bs.areport.sys.*;
import com.bs.restframework.context.util.SystemContextUtil;
import com.bs.restframework.db.Database;
import com.bs.restframework.util.GUID;
import com.bs.restframework.web.result.ResultModle;
import com.bs.restframework.web.result.ResultType;

/**
 * 
 * <p>函数名称：用户组服务类</p>
 * <p>创建时间：2012-03-08</p>
 * <p>作者：李新宇</p>
 */
public class UserGroupDao {
	
	
	/**
	 * 
	 * <p>函数名称：getMaxCode</p>
	 * <p>功能说明：获取最大编码值/p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public Map<String, Object> getMaxCode(String userID) throws Exception
	{	
		Database db = SystemContextUtil.getDatabase(this);
		String sql="SELECT F_DEPTID FROM "+EntityType.SYS_USER_TABLE+" WHERE F_ID='"+userID+"' AND F_USERTYPE<>'A'";
        Map<String, Object> userMap=db.queryObject(Map.class, sql, null);
        Map<String, Object> vMap= new HashMap<String, Object>();
        if(userMap!=null)
        {
        	String deptID = userMap.get("F_DEPTID").toString() ;
        	String sql2="SELECT * FROM (SELECT * FROM "+EntityType.SYS_USERGROUP_TABLE+" WHERE F_DEPTID='"+deptID+"' ORDER BY TO_NUMBER(F_CODE) DESC ) WHERE rownum=1 ";
            vMap=db.queryObject(Map.class, sql2, null);
        }
		
		
		return vMap;
	}
	
//	/**
//	 * 
//	 * <p>函数名称：GetUserInfoByID</p>
//	 * <p>功能说明：获取登陆用户信息</p>
//	 * <p>参数说明：</p>
//	 * <p>创建时间：2012-03-08</p>
//	 * <p>作者：李新宇</p>
//	 */	
//	public Map<String, Object>  GetUserInfoByID(String ID) throws Exception
//	{	
//		Database db = SystemContextUtil.getDatabase(this);
//		String sql="SELECT * FROM "+EntityType.SYS_USER_TABLE+" WHERE F_ID='"+ID+"'";
//        Map<String, Object> vMap=db.queryObject(Map.class, sql, null);
//		return vMap;
//	}		
	
	/**
	 * 
	 * <p>函数名称：list</p>
	 * <p>功能说明：查询列表</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public Map<String, Object> list(Map<String, Object> objects) throws Exception
	{
		Database db = SystemContextUtil.getDatabase(this);
		
		Map<String, Object> resultMap = DataUtil.getUserGroupListByPage(db, objects, EntityType.SYS_USERGROUP,false, false, true);
		
		return resultMap;
	}
	
	/**
	 * 
	 * <p>函数名称：Comboxlist</p>
	 * <p>功能说明：combox列表</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public List<Map> comboxList(Map<String, Object> objects) throws Exception
	{
		Database db = SystemContextUtil.getDatabase(this);
		String condition = (String) objects.get("CONDITION");
		List<Map> listMap = DataUtil.getComboboxList(db, objects, EntityType.SYS_USERGROUP,false,false,false,condition);
		
		return listMap;
	}
	/**
	 * 。。。    
	 * <p>函数名称：GetUserInfoByID</p>
	 * <p>功能说明：通过ID 获取编码</p>
	 * <p>参数说明：ID（F_ID）</p>
	 * <p>创建时间：2012-03-20</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
	public Map<String, Object> getUserInfoByID(String ID) throws Exception
	{	
		Database db = SystemContextUtil.getDatabase(this);		
		String sql="SELECT * FROM "+EntityType.SYS_USER_TABLE+" WHERE F_ID= '"+ID +"'";
        Map<String, Object> vMap=db.queryObject(Map.class, sql, null);
		return vMap;
	}	
	/**
	 * 
	 * <p>函数名称：edit</p>
	 * <p>功能说明：编辑</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public String edit(Map<String, Object> objects) throws Exception
	{
		String msg = "";

		Database db = SystemContextUtil.getDatabase(this);
		DataUtil.update(db, objects, EntityType.SYS_USERGROUP);

		return msg;
	}
	/**
	 * 
	 * <p>函数名称：del</p>
	 * <p>功能说明：删除</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public String del(Map<String, Object> objects) throws Exception
	{
		String msg = "";
		Database db = SystemContextUtil.getDatabase(this);
        
		DataUtil.del(db, objects, EntityType.SYS_USERGROUP, false, false);
		
		return msg;
	}
	/**
	 * 
	 * <p>函数名称：add</p>
	 * <p>功能说明：添加</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：李新宇</p>
	 */
	public String add(Map<String, Object> objects) throws Exception
	{
		String msg = "";

		Database db = SystemContextUtil.getDatabase(this);
        DataUtil.add(db, objects, EntityType.SYS_USERGROUP);
    
		return msg;
	}
	/**
	 * 。。。    
	 * <p>函数名称：getDWJC</p>
	 * <p>功能说明：获取单位编码级长/p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-08</p>
	 * <p>作者：陈金滨</p>
	 */
//	public Map<String, Object>  getDWJC() throws Exception
//	{	
//		String DWJC = "" ;
//		Database db = SystemContextUtil.getDatabase(this);
//		
//		String sql="SELECT F_ITEM1 FROM "+EntityType.ARP_SET_TABLE+" WHERE F_OBJ='单位编码级长' ";
//        Map<String, Object> vMap=db.queryObject(Map.class, sql, null);
//        if((vMap==null)||(vMap.isEmpty()))
//        {
//        	DWJC = "333" ;
//        }
//        else
//        {
//        	DWJC = (String) vMap.get("F_ITEM1");
//        }
//		vMap.put("F_ITEM1", DWJC);
//		return vMap;
//	}	
	/**
	 * 。。。    
	 * <p>函数名称：IsGroupUsed</p>
	 * <p>功能说明：判断用户组是否已被使用，是则返回True/p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-19</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
	@SuppressWarnings("unchecked")
	public boolean isGroupUsed(String ID) throws Exception
	{	
		boolean result = false ;
		Database db = SystemContextUtil.getDatabase(this);
		
		String sql="SELECT * FROM "+EntityType.SYS_USER_TABLE+" WHERE F_USERGROUPID='"+ID+"'";
		Map<String, Object> vMap = new HashMap<String, Object>() ;
        vMap= db.queryObject(Map.class, sql, null);
        if((vMap==null)||(vMap.isEmpty()))
        {
        	result=false;
        }
        else
        {
        	result=true ;
        }
		
		return result;
	}	
	/**
	 * 。。。    
	 * <p>函数名称：IsBmExist</p>
	 * <p>功能说明：判断是否已存在编码,编码存在则返回True/p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-19</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
	@SuppressWarnings("unchecked")
	public boolean isCodeExist(String code) throws Exception
	{	
		boolean result = false ;
		Database db = SystemContextUtil.getDatabase(this);
		
		String sql="SELECT F_CODE FROM "+EntityType.SYS_USERGROUP_TABLE+" WHERE F_CODE='"+code+"'";
		Map<String, Object> vMap = new HashMap<String, Object>() ;
        vMap= db.queryObject(Map.class, sql, null);
        if((vMap==null)||(vMap.isEmpty()))
        {
        	result=false;
        }
        else
        {
        	result=true ;
        }
		
		return result;
	}	
	
	/**
	 * 。。。    
	 * <p>函数名称：ChangeUpleaf</p>
	 * <p>功能说明：新增或修改后，更改上级节点最细级字段/p>
	 * <p>参数说明：编码（F_CODE）,操作类型<新增，修改，删除></p>
	 * <p>创建时间：2012-03-19</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
//	public boolean changeUpleaf(String code,String busType) throws Exception
//	{	
//		//Code 为当前新增 修改 删除数据的上级编码
//		boolean IsSucess = false ;
//		String sql = "";
//		Database db = SystemContextUtil.getDatabase(this);	
//		if(busType=="新增")
//		{
//			sql="UPDATE "+EntityType.SYS_USERGROUP_TABLE+" SET F_ISLEAF=0 WHERE F_CODE='"+code+"'";
//			db.update(sql);
//			IsSucess = true ;
//		}
//		return IsSucess;
//	}	
	
	/**
	 * 。。。    
	 * <p>函数名称：IsLeaf</p>
	 * <p>功能说明：判断是否最细级,如果是则返回真/p>
	 * <p>参数说明：ID</p>
	 * <p>创建时间：2012-03-19</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
	
//	public boolean IsLeaf(String id) throws Exception
//	{	
//		boolean IsID = false ;
//		Database db = SystemContextUtil.getDatabase(this);
//		
//		String sql="SELECT * FROM "+EntityType.SYS_USERGROUP_TABLE+" WHERE F_ID='"+id +"' and F_ISLEAF='1' ";
//        Map<String, Object> vMap=db.queryObject(Map.class, sql, null);
//        if((vMap == null)||(vMap.isEmpty()))
//        {
//        	IsID = false ;
//        }
//        else
//        {
//        	IsID = true ;
//        }
//        
//		return IsID;
//	}		
	
	/**
	 * 。。。    
	 * <p>函数名称：GetBMbyID</p>
	 * <p>功能说明：通过ID 获取编码</p>
	 * <p>参数说明：ID（F_ID）</p>
	 * <p>创建时间：2012-03-20</p>
	 * <p>作者：陈金滨</p>
	 * @param <False>
	 */
	public String getCodebyID(String id) throws Exception
	{	
		String result = "" ;
		Database db = SystemContextUtil.getDatabase(this);		
		String sql="SELECT F_CODE FROM "+EntityType.SYS_USERGROUP_TABLE+" WHERE F_ID= '"+id +"'";
        Map<String, Object> vMap=db.queryObject(Map.class, sql, null);
        if((vMap == null)||(vMap.isEmpty()))
        {
        	result = "" ;
        }
        else
        {
        	result = (String) vMap.get("F_CODE") ;
        }		
		return result;
	}	
}
